const validation = {
  trim(obj: any) {
    return `${obj}`.trim()
  },
  required(content: any) {
    const str = content === null || content === undefined ? '' : this.trim(content)
    return str.length !== 0
  },
  // 是否 url
  isUrl(content: string) {
    return /^(http|https):\/\//g.test(content)
  },
  // 是链接
  isExternal(content: string) {
    return /^(https?:|mailto:|tel:)/.test(content)
  },
  // 电话号码
  isPhone(content: string) {
    return /^1[23456789]\d{9}$/.test(content) || /^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/.test(content)
  },
  // 手机号码
  isMobile(content: string) {
    return /^1[23456789]\d{9}$/.test(content)
  },
  // 邮箱
  isEmail(content: string) {
    return /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(content)
  },
  // 数字
  isNumber(content: string) {
    return /^-?[0-9]+(\.[0-9]+)?$/.test(content)
  },
  // 整数
  isInt(content: string) {
    const regex = '^-?\\d+$'
    const pattern = new RegExp(regex)
    return pattern.test(content)
  },
  // 正整数
  isPositiveInt(content: string) {
    return /^[1-9]*[1-9][0-9]*$/.test(content)
  },
  // 正整数或0
  isPositiveIntZero(content: string) {
    return /^([1-9]\d*|0)$/.test(content)
  },
  // 只能包含中文或数字或字母
  isChNumEn(content: string) {
    return /^[a-zA-Z0-9\u4e00-\u9fa5]+$/.test(content)
  },
  // 字母数字
  isNumLetter(content: string) {
    return /^[A-Za-z0-9]+$/.test(content)
  },
  // 字母数字-
  isNumLetterDash(content: string) {
    return /^[A-Za-z0-9-]+$/.test(content)
  },
  // 数字和英文逗号
  isNumComma(content: string) {
    return /^[0-9,]+$/.test(content)
  },
  // 是有效范围内的数
  isInNumLimit(content = '', { min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER } = {}) {
    const num = Number(content)
    return num >= min && num <= max
  }
}
export default validation
